package test;

public class DayOfYearCalculator {

    public static int calculateDayOfYear(int year, int month, int day) {
        // 初始化天数为 1
        int dayOfYear = 1;
        // 遍历 1 月到当前月之前的所有月份
        for (int i = 1; i < month; i++) {
            // 根据月份判断每个月的天数
            if (i == 2 && isLeapYear(year)) {
                // 如果是闰年的 2 月，天数为 29 天
                dayOfYear += 29;
            } else if (i == 2) {
                // 非闰年的 2 月，天数为 28 天
                dayOfYear += 28;
            } else if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
                // 大月（1、3、5、7、8、10、12）的天数为 31 天
                dayOfYear += 31;
            } else {
                // 其他月份（4、6、9、11）的天数为 30 天
                dayOfYear += 30;
            }
        }
        // 加上当前月的天数
        dayOfYear += day;
        return dayOfYear;
    }

    // 判断是否为闰年的方法
    private static boolean isLeapYear(int year) {
        return (year % 4 == 0 && year % 100!= 0) || year % 400 == 0;
    }
    public static void main(String[] args) {
        int year = 2023;
        int month = 7;
        int day = 15;
        int dayOfYear = calculateDayOfYear(year, month, day);
        System.out.println(year + "年" + month + "月" + day + "日是这一年的第" + dayOfYear + "天。");
    }
}